package com.ruoyi.exam.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.exam.domain.ExamQuestion;
import com.ruoyi.exam.vo.ExamQuestionVo;
import com.ruoyi.exam.vo.ExamQuestionDetailVo;
import com.ruoyi.exam.vo.ExamBankQuestionAnswerInfoVo;
import com.ruoyi.exam.vo.SubmitAnswerVo;
import com.ruoyi.exam.vo.SubmitAnswerResultVo;

import java.util.List;

/**
 * 题目Service接口
 *
 * @author Tellsea
 * @date 2025-05-30
 */
public interface IExamQuestionService extends IService<ExamQuestion> {

    /**
     * 分页查询
     *
     * @param entity
     * @return
     */
    TableDataInfo<ExamQuestionVo> queryList(ExamQuestionVo entity);

    /**
     * 查询全部
     *
     * @param entity
     * @return
     */
    List<ExamQuestionVo> queryAll(ExamQuestionVo entity);

    /**
     * 根据ID查询
     *
     * @param questionId
     * @return
     */
    ExamQuestionVo queryById(Long questionId);

    /**
     * 根据ID查询题目详细信息，包含选项、答案、解析等
     *
     * @param questionId
     * @param userId
     * @return
     */
    ExamQuestionDetailVo queryDetailById(Long questionId,Long userId);

    /**
     * 查询用户在特定题库中特定题目的答题信息
     *
     * @param questionId 题目ID
     * @param bankId 题库ID
     * @return 答题信息
     */
    ExamBankQuestionAnswerInfoVo queryRecordInfo(Long questionId, Long bankId);

    /**
     * 提交答案
     *
     * @param submitAnswerVo 提交答案的请求信息
     * @param userId 用户ID
     * @return 提交结果
     */
    SubmitAnswerResultVo submitAnswer(SubmitAnswerVo submitAnswerVo, Long userId);

    /**
     * 更新题目所属题库
     *
     * @param entity 题目实体（包含题库ID列表）
     */
    void updateQuestionBankIds(ExamQuestionVo entity);
}
